package ww;


public class J24_Inheritance {
	
	// 클래스 확장하기
	// OOP에서 상속은 매우 중요한 기능임
	// 상속을 이용해서 기존코드를 확장시켜
	// 클래스를 만들수 있음 
	// 기존 클래스를 확장시켜 새로운 클래스를 만드는 경우를 상속이라함
	// 원래 클래스를 부모, 기본 base 클래스라 하고
	// 새로운 클래스를 자식, 하위sub 클래스 라고함
	
	// 기본 클래스를 확장하는 행위는 크게 2가지로 나뉨
	// 기본 클래스에 없는 새로운 멤버, 메서드를 추가하거나 
	// 기본 클래스에 이미 있는 메서드를 무시하고 
	// 새롭게 메서드를 제작성 함
	
	// 클래스 확장시 extends 라는 예약어 사용
	// 한편, 기본 클래스를 확장하여
	// 새로운 클래스를확장하는 경우
	// 형성되는 특수한 관계는 is-a 임
	// 예를 들어, Animal 이라는 클래스는 
	// 따라서, fish, Tiger , Bug 등의 부모 클래스임
	// Fish is Aniaml, Tiger is Animal , Bug is Animal 인 것 처럼
	// is-a 관계 성립
	
	// 메서드 재정의 override
	// 클래스 확장시 , 부모클래스의 
	// 메서드 동작을 자식 클래스에서 변경할수 있음
	// 단, final 로 선언된 메서드는 재정의 불가
	public static void main(String[] args) {
	J24_ParentClass pc = new J24_ParentClass();
	pc.showMeTheMoney();
	J24_ChildClass cc = new J24_ChildClass();
	cc.showMeTheMoney();
	J25_Fish f = new J25_Fish();
	f.eat();
}
}

